package LCR_code;

/**
 * @author blh
 * @date 2024年08月18日 10:20
 */
public class LCR_165_818 {
    public int crackNumber(int ciphertext) {
        String str = String.valueOf(ciphertext);
        int len = str.length();
        int[] dp = new int[len];
        // 单独对dp[1]做矫正
        String substring = str.substring(0, 2);
        int tempInt = Integer.parseInt(substring);
        if (tempInt >= 10 && tempInt <= 25) {
            dp[1] = 2;
        } else {
            dp[1] = 1;
        }
        // 0-25 对应 a-z
        dp[0] = 1;
        for (int i = 2; i < str.toCharArray().length; i++) {
            // dp[i]可以是当前的字符或者当前字符和前一个的组合
            dp[i] = dp[i - 1];

            String substring2 = str.substring(i - 1, i + 1);
            int tempInt2 = Integer.parseInt(substring);
            if (tempInt2 >= 10 && tempInt2 <= 25) {
                dp[i] += dp[i - 2];
            }

        }
        return dp[len - 1];
    }
}
